package CreationPattern.FactoryMethod;

/**
 * @Classname : FactoryClient
 * @Description : 测试工厂模式
 * @Author : chentianyu
 * @Date 2023/1/4 22:58
 */


public class FactoryMethodClient {

    public static void main(String[] args) {

        System.out.println("测试 工厂模式-简单工厂 枚举实现");
        // 创建手机工厂
        PhoneSimpleFactory phoneSimpleFactory = new PhoneSimpleFactory();

        // 运行华为手机
        phoneSimpleFactory.run(PhoneProductEnum.HUAWEI);

        // 运行小米手机
        phoneSimpleFactory.run(PhoneProductEnum.XIAOMI);
        System.out.println("--------------------------------------------------------------------");


        System.out.println("测试 工厂模式-简单工厂 反射实现");
        // 创建手机工厂
        PhoneSimpleFactory phoneSimpleFactory2 = new PhoneSimpleFactory();

        // 运行华为手机
        phoneSimpleFactory2.run(HUAWEI.class);

        // 运行小米手机
        phoneSimpleFactory2.run(XIAOMI.class);
        System.out.println("--------------------------------------------------------------------");


        System.out.println("测试 工厂模式-工厂方法");
        // 创建华为手机工厂
        PhoneFactory huaweiFactory = new HUAWEIFactory();
        // 运行华为手机
        huaweiFactory.run();

        // 创建小米手机工厂
        PhoneFactory xiaomiFactory = new XIAOMIFactory();
        // 运行小米手机
        xiaomiFactory.run();

        System.out.println("--------------------------------------------------------------------");
    }
}

/** 20230326
 * 测试 工厂模式-简单工厂 枚举实现
 * 华为手机在运行！
 * 小米手机在运行！
 * --------------------------------------------------------------------
 * 测试 工厂模式-简单工厂 反射实现
 * 华为手机在运行！
 * 小米手机在运行！
 * --------------------------------------------------------------------
 * 测试 工厂模式-工厂方法
 * 华为手机在运行！
 * 小米手机在运行！
 * --------------------------------------------------------------------
 */
